package com.xuetang9.controller.a.user;

import com.github.pagehelper.PageHelper;
import com.xuetang9.dto.InputDto;
import com.xuetang9.dto.a.ListRequestDTO;
import com.xuetang9.vo.JsonResultVO;
import com.xuetang9.vo.ListVO;
import com.xuetang9.domain.User;
import com.xuetang9.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @工能 处理前端用户模块增加处理请求
 * @作者 杜目杰
 * @时间 2020/5/12
 * @地点 公司
 * @版本 1.0.0
 * @版权 老九学堂
 */
@Controller("UserControllerA")
@CrossOrigin   //处理跨域请求问题
@ResponseBody //自动将Java对象转化为Json对象
public class UserController {
    // 创建请求处理对象
    @Autowired
    @Qualifier("UserServiceImplA")
    UserService userService;


    /**
     *  处理查询用户信息请求
     * @param user 用户查询请求参数
     * @return 前端用户查询显示类容
     */
    @PostMapping("/system/user/query")
    public JsonResultVO listUser(@RequestBody ListRequestDTO<User> user){
        JsonResultVO<ListVO> jsonResultVO = new JsonResultVO<>();
        // 用来保存需要返回的数据
        ListVO listUserVO = null;
        // 传入为空直接返回空防止资源浪费
        if (user == null){
            jsonResultVO.setCode(500);
            jsonResultVO.setMessage("没有数据");
            return jsonResultVO;
        }
        // 创建业务执行输入对象
        InputDto inputDto = new InputDto();
        inputDto.function = "查询用户";
        inputDto.date = user;
        // 得到显示数据
        try {
            listUserVO = userService.listUser(inputDto);
        }catch (Exception e){
            jsonResultVO.setMessage("查询报错");
            jsonResultVO.setCode(500);
        }
        //将显示数据放入返回前端的请求返回对象中
        jsonResultVO.setData(listUserVO);
        jsonResultVO.setCode(200);
        return  jsonResultVO;
    }

    /**
     *  处理添加用户请求
     * @param user 用户添加请求参数
     * @return 执行结果
     */
    @PostMapping("/system/user/add")
    public JsonResultVO insertInto(User user){
        JsonResultVO<User> jsonResultVO = new JsonResultVO<>();
        // 保存执行添加的结果
        int result = -1;
        // 传入为空直接返回空防止资源浪费
        if (user == null){
            jsonResultVO.setMessage("数据为空");
            jsonResultVO.setCode(500);
          return jsonResultVO;
        }
        // 执行添加并得到结果
        InputDto inputDto = new InputDto();
        inputDto.function = "添加用户";
        inputDto.date = user;
        // 执行添加并得到结果
        try {
            result =  userService.insertUser(inputDto);
        }catch (Exception e){
            jsonResultVO.setMessage("添加失败");
            jsonResultVO.setCode(500);
            return jsonResultVO;
        }
        // 根据结果返回对应的数字 101代表失败 100代表成功
        if (result == -1){
            jsonResultVO.setMessage("");
            jsonResultVO.setCode(500);
            return jsonResultVO;
        }else{
            jsonResultVO.setMessage("添加成功");
            jsonResultVO.setCode(200);
            return jsonResultVO;
        }
    }

}
